package com.xzy.rabbit.demo.workqueue.d;

import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.xzy.rabbit.common.util.RabbitUtil;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 工作模式（Work Queue）
 *
 * @author xzy
 * @date 2021年9月23日
 */
public class Main {
    private static final Integer MESSAGE_COUNT = 10;
    private static final String QUEUE_NAME = "work_queue_d";
    private static final ConnectionFactory CONNECTION_FACTORY = RabbitUtil.CONNECTION_FACTORY;

    /**
     * 队列持久化
     */
    public static void main(String[] args) throws IOException, TimeoutException, InterruptedException {
        // 1.创建连接
        try (Connection connection = CONNECTION_FACTORY.newConnection()) {

            // 2.生产消息（发布任务）
            Thread produceThread = new Thread(new Producer(connection, QUEUE_NAME, MESSAGE_COUNT, 1L), "PRODUCE");
            produceThread.start();

            produceThread.join();
            // 3.手动重启RabbitMQ，查看队列是否依然存在
            // 如果使用的是docker，直接使用“docker restart xxx”命令重启RabbitMQ容器
        }
    }
}
